package com.zebra.remoting.protocol;


import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * Command code for rpc remoting command.
 *  GW:  1 进入新服务器， 2 校验但跳转服务器【返回大厅，如果以前服务器不在线需要重新找一个服务器】  3 仅仅校验，直接发送消息到TMS;  4,同步消息  9,广播消息
 * @author SK
 */
public enum ProcessorType {

    L_LOGIN(1),  //1 进入新服务器
    L_RECON(2),  //2，大厅重连  校验
    L_EXIT(3),   //3, 大厅退出，切换账号

    G_LOGIN(4),  //4 子游戏进入 校验 + 跳转服务器 eg. 进入 游戏， 返回大厅
    G_RECON(5),  //5，子游戏重连 校验 + 重连 eg.  重连大厅 重连 子游戏
    G_EXIT(6),   //6, 子游戏退出操作

    GM(9),         //9， 校验  一般消息 只需校验转发
    PUSH(10)      //推送消息
     ;
    private int value;

    ProcessorType(int value) {
        this.value = value;
    }


    private final static Map<Integer, ProcessorType> stateMap
            = Arrays.stream(ProcessorType.values()).collect(Collectors.toMap(ProcessorType::value, t -> t));


    public int value() {
        return this.value;
    }

    public static ProcessorType valueOf(int value) {
       return stateMap.get(value);
    }

}